package com.itlong.cloud.operate.service;

import com.itlong.cloud.POJO.DTO.operate.OperatePushInfoPageDTO;
import com.itlong.cloud.POJO.DTO.operate.OperateSavePushInfoDTO;
import com.itlong.cloud.POJO.VO.operate.OperatePushInfoOneVO;
import com.itlong.cloud.POJO.VO.operate.OperatePushInfoVO;
import com.itlong.cloud.utils.page.Page;

import java.util.Date;
import java.util.List;

/**
 * <desc>
 *      运营-运营管理-消息推送接口。
 * <desc/>
 *
 * @createDate 2017/9/28.
 */
public interface IOperatePushInfoService {

     /**
      * <desc>
      *      添加消息推送内容。
      * <desc/>
      *
      * @param  pushInfoDTO  添加消息推送信息数据传输对象
      * @return  受影响的行数
      * @author shengen.T
      * @createDate 2017/9/28
      */
    Integer savePushInfo(OperateSavePushInfoDTO pushInfoDTO)  throws Exception;

     /**
      * <desc>
      *      修改推送消息内容。
      * <desc/>
      *
      * @param pushInfoDTO 修改消息推送信息数据传输对象
      * @return 
      * @author shengen.T
      * @createDate 2017/9/28
      */
    Integer updatePushInfo(OperateSavePushInfoDTO pushInfoDTO) throws Exception;


     /**
      * <desc>
      *      根据提供的消息ID批量删除对用数据。
      * <desc/>
      *
      * @param  pushInfoIds 推送消息ID列表
      * @return 返回影响的行数
      * @author shengen.T
      * @createDate 2017/9/28
      */
    Integer deletePushInfo(String pushInfoIds) throws Exception;

     /**
      * <desc>
      *      根据推送消息的ID获取单条数据信息。
      * <desc/>
      *
      * @param  pushInfoId  //消息ID
      * @return
      * @author shengen.T
      * @createDate 2017/9/28
      */
     OperatePushInfoOneVO getPushInfo(String pushInfoId) throws Exception;

     /**
      * <desc>
      *      获取推送消息列表信息。
      * <desc/>
      *
      * @param operatePushInfoPageDTO  消息推送信息数据传输对象
      * @return
      * @author shengen.T
      * @createDate 2017/9/28
      */
    Page<OperatePushInfoVO> getPushInfoPage(OperatePushInfoPageDTO operatePushInfoPageDTO) throws Exception;


     /**
      * <desc>
      *      获取允许推送消息的列表信息。
      * <desc/>
      *
      * @param
      * @return
      * @author shengen.T
      * @createDate 2017/10/26
      */
    List<OperatePushInfoVO> getEnabledPushInfoList() throws Exception;

     /**
      * <desc>
      *      批量设置消息推送状态。
      * <desc/>
      *
      * @param  pushInfoIds 消息ID 列表
      * @return
      * @author shengen.T
      * @createDate 2017/10/26
      */
    Integer setPushStatus(String pushInfoIds) throws Exception;

    /**
     * <desc>
     *      获取当前时间某项目允许推送的最新推送消息
     * <desc/>
     *
     * @param projectId 项目id
     * @return
     * @author Chunjian.G
     * @createDate 2017-11-08
     */
    List<String> getLatestPushContent(String projectId) throws Exception;


     /**
      * <desc>
      *      获取过期消息推送列表。
      * <desc/>
      *
      * @param  nowTime 系统当前时间
      * @return
      * @author shengen.T
      * @createDate 2017-12-04
      */
    boolean checkOverDatePushInfoList(Date nowTime) throws Exception;

    /**
     * <desc>
     *      获取当前时间某项目允许推送的最新推送消息标题
     * <desc/>
     *
     * @param projectId 项目id
     * @return
     * @author Juguang.S
     * @createDate 2019-08-28
     */
    List<String> getLatestPushTitle(String projectId) throws Exception;

    /**
     * <desc>
     *      获取app历史版本号列表
     * </desc>
     *
     * @author wangzhi
     * @createDate 2020/04/29
     */
    List<String> getAppVersionList() throws Exception;

    /**
     * <desc>
     *      处理旧推送数据，一次性接口，将原来的app推送数据复制一份作为小程序的推送数据，发布后第一时间运行该接口
     * </desc>
     *
     * @author wangzhi
     * @createDate 2020/04/29
     */
    Integer copyAppPushInfoToMiniProgram() throws Exception;
}
